package com.xbongbong.pro.applist.pojo;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

/**
 * @author long.rao
 * @version v1.0
 * @date 2019/3/7 16:41
 * @since v1.0
 */
@Getter
@Setter
public class SelectPojo {
    /**
     * 对象的英文别名
     */
    private String alias;
    /**
     *
     */
    private String attr;
    /**
     * 显示在<select>标签的名称
     */
    private String name;
    /**
     * 名称简称
     */
    private String sortName;
    /**
     * 数据类型
     */
    private Integer fieldType;
    /**
     * 是否为自定义筛选,0默认不是自定义筛选
     */
    private Integer isCustomize;
    /**
     * 子选项列表-开启的
     */
    private List<SelectOptionPojo> optionList;
    /**
     * 显示用的默认值（用于<select>组件寻找默认值）
     */
    private String initValue;
    /**
     * 显示用的默认名称（用于<select>组件显示）
     */
    private String initName;

    /**
     * 默认构造函数
     * 初始化默认值
     */
    public SelectPojo() {
        this.isCustomize = 0;
    }

    public SelectPojo(String alias, String name, Integer fieldType) {
        this();
        this.alias = alias;
        this.name = name;
        this.fieldType = fieldType;
    }

    /**
     * 带下拉框的筛选
     *
     * @param alias      别名
     * @param name       显示的名称
     * @param fieldType  数据类型
     * @param optionList 筛选项
     */
    public SelectPojo(String alias, String name, Integer fieldType, List<SelectOptionPojo> optionList) {
        this();
        this.alias = alias;
        this.name = name;
        this.fieldType = fieldType;
        this.optionList = optionList;
    }

    /**
     * 带下拉框的筛选
     *
     * @param alias      别名
     * @param name       显示的名称
     * @param fieldType  数据类型
     * @param optionList 筛选项
     * @param attr 英文名
     */
    public SelectPojo(String alias, String name, Integer fieldType, List<SelectOptionPojo> optionList, String attr) {
        this();
        this.alias = alias;
        this.name = name;
        this.fieldType = fieldType;
        this.optionList = optionList;
        this.attr = attr;
    }

    /**
     * 带默认值下拉框的筛选
     *
     * @param alias      别名
     * @param name       显示的名称
     * @param fieldType  数据类型
     * @param optionList 筛选项
     */
    public SelectPojo(String alias, String name, Integer fieldType, List<SelectOptionPojo> optionList, String initValue,
                      String initName) {
        this();
        this.alias = alias;
        this.name = name;
        this.fieldType = fieldType;
        this.optionList = optionList;
        this.initValue = initValue;
        this.initName = initName;
    }

    /**
     * 带下拉框的筛选
     *
     * @param alias      别名
     * @param name       显示的名称
     * @param sortName 　名称简称
     * @param fieldType  数据类型
     * @param optionList 筛选项
     * @param attr 英文名
     */
    public SelectPojo(String alias, String name, String sortName, Integer fieldType, List<SelectOptionPojo> optionList, String attr) {
        this();
        this.alias = alias;
        this.name = name;
        this.fieldType = fieldType;
        this.optionList = optionList;
        this.attr = attr;
        this.sortName = sortName;
    }
}
